package fichier;
import java.io.*; 
import java.util.Vector;

import modele.Equation2D;
import modele.Equation3D;
import modele.FonctionAOptimiser2D;
import modele.FonctionAOptimiser3D;

public class CreerXML
{
	private File fichier;
	private FonctionAOptimiser2D fct2D;
	private FonctionAOptimiser3D fct3D;
	private Vector<Equation2D> listeEquations2D;
	private Vector<Equation3D> listeEquations3D;
	private boolean is3D;	
	
	@SuppressWarnings("unchecked")
	public CreerXML(File fichier,Object fctOptimiser,Vector listeEquations,boolean is3D)
	{
		this.fichier = fichier;
		this.is3D = is3D;
		
		if(is3D)
		{
			this.fct3D = (FonctionAOptimiser3D)fctOptimiser;
			Vector<Equation3D> vector = (Vector<Equation3D>)listeEquations;
			this.listeEquations3D = vector;
		}
		else
		{
			this.fct2D = (FonctionAOptimiser2D)fctOptimiser;
			this.listeEquations2D = (Vector<Equation2D>)listeEquations;
		}
	}
	
	public void affiche()
	{
		System.out.println("fichier : "+fichier);
		System.out.println("is3D : "+is3D);
		System.out.println("fct2D : "+fct3D);
		System.out.println("fct3D : "+fct3D);
		System.out.println("eq2Ds : ");
		for (Equation2D e2D : this.listeEquations2D) 
		{
			System.out.println("-- "+e2D);
		}
		System.out.println("eq3Ds : ");
		for (Equation3D e3D : this.listeEquations3D) 
		{
			System.out.println("-- "+e3D);
		}
	}
	
	public void creerFichier()
	{		
		if (this.fichier == null) 
		{
			System.err.println("fichier d'enregistrement non specifie");
			return;
		}		
		
		if (!this.is3D)
		{		
			PrintWriter ecrivain;
			try 
			{				
				ecrivain = new PrintWriter(this.fichier);
				ecrivain.println("dimension=2");
				
				if(fct2D != null)
				{
					boolean maximiser = fct2D.getOptimiser();
				
					String optimiser = "MAXIMISER";
					if (!maximiser)
						optimiser = "MINIMISER";				
				
					ecrivain.println("optimisation="+fct2D.getX1()+":"+fct2D.getX2()+":"+optimiser);
				}
				
				for (Equation2D e2D : this.listeEquations2D) 
				{			
					String inf_eq = "INF_EQ";
					if(e2D.getOperateur().equals(">="))
						inf_eq = "SUP_EQ";
					
					ecrivain.println("eq="+e2D.getLibelle()+":"+e2D.getX1()+":"+e2D.getX2()+":"+inf_eq+":"+e2D.getPartieDroite()+":"+e2D.getCouleur().getRed()+":"+e2D.getCouleur().getGreen()+":"+e2D.getCouleur().getBlue());
				}

				ecrivain.flush();
				ecrivain.close();				
			}
			catch (FileNotFoundException e) 
			{
				e.printStackTrace();
			} 
			finally 
			{
				
			}	
		}
		
		if (this.is3D)
		{			
		}	
	}
}